﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class УправлениеДопПравамиПользователей
	{
		////////////////////////////////////////////////////////////////////////////////
		//
		// Проверка дополнительных прав выполняется путем вызова функции, относящейся к этому праву.
		// Для нового дополнительного права должна быть создана отдельная функция.
		//
		////////////////////////////////////////////////////////////////////////////////
		// Функция возвращает значение, которое означает, что право разрешено
		//

		public object ПолучитьЗначениеРазрешенногоПрава(/*Право*/)
		{
			if(true/*Право = ПланыВидовХарактеристик.ПраваПользователей.КонтролироватьПревышениеОбъемЗаказаПриОтгрузке*/)
			{
				//Результат = Ложь;
			}
			return null;
		}
		// ЗначениеРазрешенногоПрава
		// Функция возвращает список значений права, установленных для пользователя или группы пользователя.
		// Если нет установленных прав , то возвращается значение по умолчанию
		//
		// Параметры:
		//  Право               - право, для которого определяются значения
		//  ЗначениеПоУмолчанию - значение по умолчанию для передаваемого права (возвращается в случае
		//                        отсутствия значений в регистре сведений)
		//  Пользователь		- пользователь
		//
		// Возвращаемое значение:
		//  Список всех значений, установленных для пользователя или группы пользователя
		//

		public object ПрочитатьЗначениеПраваПользователя(/*Право, ЗначениеПоУмолчанию, Пользователь*/)
		{
			//ВозвращаемыеЗначения = Новый Массив;
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Пользователь"     , Пользователь);
			//Запрос.УстановитьПараметр("ПравоПользователя", Право);
			/*Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	               |	РегистрЗначениеПрав.Значение
	               |ИЗ
	               |	РегистрСведений.ЗначенияДополнительныхПравПользователя КАК РегистрЗначениеПрав
	               |ГДЕ
	               |	РегистрЗначениеПрав.Право = &ПравоПользователя
	               |	И РегистрЗначениеПрав.Пользователь В
	               |			(ВЫБРАТЬ
	               |				ПользователиГруппы.Ссылка КАК Ссылка
	               |			ИЗ
	               |				Справочник.ГруппыПользователей.ПользователиГруппы КАК ПользователиГруппы
	               |			ГДЕ
	               |				ПользователиГруппы.Пользователь = &Пользователь
	               |		
	               |			ОБЪЕДИНИТЬ ВСЕ
	               |		
	               |			ВЫБРАТЬ
	               |				ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)
	               |		
	               |			ОБЪЕДИНИТЬ ВСЕ
	               |		
	               |			ВЫБРАТЬ
	               |				&Пользователь)";*/
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Количество() = 0*/)
			{
				//ВозвращаемыеЗначения.Добавить(ЗначениеПоУмолчанию);
			}
			return null;
		}
		// ПрочитатьЗначениеПраваПользователя()
		// Функция возвращает значение дополнительного права профиля пользователя
		//
		//	Параметры:
		//  	Право               - право, наличие которого проверяется (Тип ПВХ.ПраваПользователей)
		//  	ЗначениеПоУмолчанию - значение по умолчанию для передаваемого права (возвращается в случае
		//                        	отсутствия значений в регистре сведений). Тип - булево
		//
		//	Возвращаемое значение: массив значений права
		//

		public object ПолучитьЗначениеПраваПользователя(/*Право, ЗначениеПоУмолчанию*/)
		{
			//КэшДополнительныхПрав = глЗначениеПеременной("ЗначенияДополнительныхПравПользователя");
			//МассивЗначенийПрава = КэшДополнительныхПрав[Право];
			if(true/*МассивЗначенийПрава = Неопределено*/)
			{
				//МассивЗначенийПрава = Новый Массив;
				if(true/*РольДоступна("ПолныеПрава")*/)
				{
					//ЗначениеПрава = ПолучитьЗначениеРазрешенногоПрава(Право);
					//МассивЗначенийПрава.Добавить(ЗначениеПрава);
				}
				//КэшДополнительныхПрав[Право] = МассивЗначенийПрава;
				//глЗначениеПеременнойУстановить("ЗначенияДополнительныхПравПользователя", КэшДополнительныхПрав, Истина);
			}
			return null;
		}
		//Функция проверяет наличие дополнительного права пользователя
		//Функция предназначена для работы с дополнительными правами, имеющими значение типа Булево
		//Параметры:
		//  Право               - право, наличие которого проверяется (Тип ПВХ.ПраваПользователей)
		//  ЗначениеПоУмолчанию - значение по умолчанию для передаваемого права (возвращается в случае
		//                        отсутствия значений в регистре сведений). Тип - булево
		//Возвращаемое значение: Булево (Истина, если право у пользователя есть)

		public object ПравоЕстьУПользователя(/*Право, ЗначениеПоУмолчанию*/)
		{
			//МассивЗначенийПрава = ПолучитьЗначениеПраваПользователя(Право, ЗначениеПоУмолчанию);
			return null;
		}
		// Функция возвращает право печатать непроведенные документы.
		//
		// Параметры:
		//  Проведен     - признак проведен ли документ (если документ не проводной,
		//                 то либо параметр опускается, либо равен Истина)
		//
		// Возвращаемое значение:
		//  Истина - если можно печатать, иначе Ложь.
		//

		public object РазрешитьПечатьНепроведенныхДокументов(/*Проведен = Истина*/)
		{
			if(true/*Проведен*/)
			{
			}
			return null;
		}
		// РазрешитьПечатьНепроведенныхДокументов()
		// Функция возвращает право проводить документы в рознице с нулевой ценой
		//
		// Параметры:
		//  Нет
		//
		// Возвращаемое значение:
		//  Истина - если можно проводить документы в рознице с нулевой ценой
		//

		public object РазрешитьНулевыеЦеныВРознице(/**/)
		{
			return null;
		}
		// РазрешитьНулевыеЦеныВРознице()
		// Функция возвращает право закрывать смену в рознице
		//
		// Параметры:
		//
		// Возвращаемое значение:
		//  Истина - если можно закрывать смену в рознице.
		//

		public object РазрешитьЗакрытиеСмены(/**/)
		{
			return null;
		}
		// РазрешитьЗакрытиеСмены()
		// Функция возвращает право аннулировать чеки в рознице
		//
		// Параметры:
		//
		// Возвращаемое значение:
		//  Истина - если можно аннулировать чеки в рознице.
		//

		public object РазрешитьАннулированиеЧека(/**/)
		{
			return null;
		}
		// РазрешитьАннулированиеЧека()
		// Функция возвращает право получать отчет о смене без гашения в рознице
		//
		// Параметры:
		//
		// Возвращаемое значение:
		//  Истина - если можно получать отчет о смене без гашения в рознице.
		//

		public object РазрешитьОтчетОСменеБезГашения(/**/)
		{
			return null;
		}
		// РазрешитьОтчетОСменеБезГашения()
		// Функция возвращает право создания чека возврата в рознице
		//
		// Параметры:
		//
		// Возвращаемое значение:
		//  Истина - если можно создавать чек возврата в рознице.
		//

		public object РазрешитьЧекВозврата(/**/)
		{
			return null;
		}
		// РазрешитьЧекВозврата()
		// Функция возвращает право назначения ручных скидок в рознице
		//
		// Параметры:
		//
		// Возвращаемое значение:
		//  Истина - если можно создавать чек возврата в рознице.
		//

		public object РазрешитьНазначениеРучныхСкидок(/**/)
		{
			return null;
		}
		// РазрешитьНазначениеРучныхСкидок()
		// Функция возвращает право проводить документы "Реализация товаров" с нулевой ценой
		//
		// Параметры:
		//  Нет
		//
		// Возвращаемое значение:
		//  Истина - если можно проводить документ "Реализация товаров" с нулевой ценой
		//

		public object РазрешитьНулевыеЦеныВОпте(/**/)
		{
			return null;
		}
		// РазрешитьНулевыеЦеныВОпте()
		// Функция возвращает признак защищать таблицу от редактирования или нет.
		//
		// Возвращаемое значение:
		//  Истина - если таблицу необходимо защитить от редактирования, иначе Ложь.
		//

		public object ЗащитаТаблиц(/**/)
		{
			return null;
		}
		// ЗащитаТаблиц()
		// Функция возвращает признак можно ли пользователю изменять цены в расходных накладных или нет.
		//
		// Параметры:
		//  нет.
		//
		// Возвращаемое значение:
		//  Истина - если можно менять цены, иначе Ложь.
		//

		public object РазрешитьРедактированиеЦенВДокументах(/**/)
		{
			return null;
		}
		// РазрешитьРедактированиеЦенВДокументах()
		// Функция возвращает право изменять пользователя в календаре пользователя
		//
		// Параметры:
		//  Нет
		//
		// Возвращаемое значение:
		//  Истина - если можно изменять пользователя в календаря пользователя
		//

		public object РазрешитьИзменениеПользователяВКалендареПользователя(/**/)
		{
			return null;
		}
		// РазрешитьИзменениеПользователяВКалендареПользователя()
		// Функция возвращает право редактировать КИ в списке
		//
		// Параметры:
		//  Нет
		//
		// Возвращаемое значение:
		//  Истина - если можно редактировать КИ в списке
		//

		public object РазрешитьРедактированиеКИвСписке(/**/)
		{
			return null;
		}
		// ЗапретитьРедактированиеКИвСписке()
		// Функция возвращает нужно ли рассчитывать долг при открытии форм.
		//
		// Параметры:
		//  нет.
		//
		// Возвращаемое значение:
		//  Истина - если нужно рассчитывать, иначе Ложь.
		//

		public object РассчитыватьДолгПриОткрытииФорм(/**/)
		{
			return null;
		}
		// РассчитыватьДолгПриОткрытииФорм()
		// Функция возвращает признак можно ли превышать остаток товаров по организации при отпуске товаров.
		//
		// Параметры:
		//  нет.
		//
		// Возвращаемое значение:
		//  Истина - если разрешено превышать остаток, иначе Ложь.
		//

		public object РазрешеноПревышениеОстаткаТоваровОрганизации(/*Организация = Неопределено*/)
		{
			//ОтражатьВРеглУчете = ?(НЕ ЗначениеЗаполнено(Организация), Ложь, Организация.ОтражатьВРегламентированномУчете);
			if(true/*НЕ ОтражатьВРеглУчете*/)
			{
			}
			return null;
		}
		// РазрешеноПревышениеОстаткаТоваровОрганизации()
		// Функция возвращает признак можно ли превышать объем заказа при отпуске товаров.
		//
		// Параметры:
		//  нет.
		//
		// Возвращаемое значение:
		//  Истина - если разрешено превышать остаток, иначе Ложь.
		//

		public object РазрешеноПревышениеОбъемаЗаказаПриОтгрузке(/**/)
		{
			return null;
		}
		// РазрешеноПревышениеОбъемаЗаказаПриОтгрузке()
		// Функция возвращает признак разрешено ли превышение контролируемых значений по бюджетам пользователям.
		//
		// Параметры:
		//  нет.
		//
		// Возвращаемое значение:
		//  Истина - если разрешено превышать контролируемые значения, иначе Ложь.
		//

		public object РазрешеноПревышениеКонтролируемыхЗначенийПоБюджетам(/**/)
		{
			return null;
		}
		// РазрешеноПревышениеКонтролируемыхЗначенийПоБюджетам()
		// Процедура проверяет цены товаров (услуг) на допустимость для данного пользователя
		//
		// Параметры:
		//  ДокументОбъект     - документ;
		//  ИмяТабличнойЧасти  - строка, имя табличной части, которую надо проверять,
		//  Отказ              - признак отказа от проведения документа
		//

		public void ПроверитьДопустимостьЦенОтпуска(/*ДокументОбъект, ИмяТабличнойЧасти, Отказ*/)
		{
			if(true/*РольДоступна("ПолныеПрава")*/)
			{
			}
			//Запрос = Новый Запрос;
			//МетаданныеДокумента = ДокументОбъект.Метаданные();
			//МетаданныеТабЧастиДокумента = МетаданныеДокумента.ТабличныеЧасти.Найти(ИмяТабличнойЧасти);
			//ИмяДокумента = МетаданныеДокумента.Имя;
			//ЕстьХарактеристикаНоменклатуры = МетаданныеТабЧастиДокумента.Реквизиты.Найти("ХарактеристикаНоменклатуры") <> Неопределено;
			//ДополнительныеПоля         = "";
			//ЛевоеСоединение            = "";
			//ПоляДляОбъединенияЗапросов = "";
			//СписокФильтров = ПравоНеОтпускатьТоварСЦенойНижеОпределенногоТипа();
			//НомерТипаЦен = 0;
			//ВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
			//Запрос.УстановитьПараметр("ВалютаРеглУчета", ВалютаРегламентированногоУчета);
			/*Запрос.Текст = "
	|ВЫБРАТЬ
	|	Док.Номенклатура,
	|	"+?(МетаданныеТабЧастиДокумента.Реквизиты.Найти("ЕдиницаИзмерения") <> Неопределено,"Док.ЕдиницаИзмерения", "Док.Номенклатура.ЕдиницаХраненияОстатков")+" КАК ЕдиницаИзмерения,
	|	"+?(МетаданныеТабЧастиДокумента.Реквизиты.Найти("СтавкаНДС") <> Неопределено,"Док.СтавкаНДС,", "")+"
	|	ВЫБОР КОГДА Количество = 0 ТОГДА Док.Цена ИНАЧЕ Док.Сумма/Док.Количество КОНЕЦ КАК Цена,
	|	"+?(МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено,"Док.Ссылка.ВалютаДокумента", "&ВалютаРеглУчета")
	+" КАК ВалютаДокумента,
	|	Док.НомерСтроки
	|" + ДополнительныеПоля + "
	|
	|ИЗ 
	|	Документ." + ИмяДокумента + "."+ИмяТабличнойЧасти+" КАК Док
	|" + ЛевоеСоединение + "
	|ГДЕ
	|	Док.Ссылка = &ДокументСсылка
	|
	|УПОРЯДОЧИТЬ ПО Док.НомерСтроки 
	|";*/
			/*// Установим параметры запроса.
*/
			//Запрос.УстановитьПараметр("ДокументСсылка" , ДокументОбъект.Ссылка);
			//РезультатЗапроса = Запрос.Выполнить();
			//ПроверилиНаличиеЦенВЗапросе = Ложь;
			//СоответствиеКурсыВалют = Новый Соответствие;
			//ЕстьРеквизитУчитыватьНДС = МетаданныеДокумента.Реквизиты.Найти("УчитыватьНДС") <> Неопределено;
			//ЕстьСуммаВключаетНДС = МетаданныеДокумента.Реквизиты.Найти("СуммаВключаетНДС") <> Неопределено;
			//ЕстьРеквизитТабЧастиСтавкаНДС = МетаданныеТабЧастиДокумента.Реквизиты.Найти("СтавкаНДС") <> Неопределено;
			//Выборка = РезультатЗапроса.Выбрать();
			while(true/*Выборка.Следующий()*/)
			{
				if(true/*НЕ ПроверилиНаличиеЦенВЗапросе*/)
				{
					if(true/*РезультатЗапроса.Колонки.Найти("Цена") <> Неопределено*/)
					{
						//ПроверилиНаличиеЦенВЗапросе = Истина;
					}
				}
				//НомерТипаЦен = 1;
				//ЦенаТовара   = ?(НЕ ЗначениеЗаполнено(Выборка.Цена), 0, Окр(Выборка.Цена,2));
				//ВалютаТовара = Выборка.ВалютаДокумента;
				if(true/*СоответствиеКурсыВалют[ВалютаТовара] = Неопределено*/)
				{
					//СтруктураКурсаЦеныТовара             = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаТовара, ДокументОбъект.Дата);
					//КурсЦеныТовара                       = СтруктураКурсаЦеныТовара.Курс;
					//КратностьЦеныТовара                  = СтруктураКурсаЦеныТовара.Кратность;
					//СоответствиеКурсыВалют[ВалютаТовара] = СтруктураКурсаЦеныТовара;
				}
				//МинимальнаяЦена = 0;
				while(true/*НомерТипаЦен <> 0*/)
				{
					if(true/*РезультатЗапроса.Колонки.Найти("Цена" + НомерТипаЦен) <> Неопределено
			   И РезультатЗапроса.Колонки.Найти("Цена" + НомерТипаЦен + "Валюта") <> Неопределено
			   И РезультатЗапроса.Колонки.Найти("Цена" + НомерТипаЦен + "Единица") <> Неопределено*/)
					{
						//ЦенаПроверки    = Выборка["Цена" + НомерТипаЦен];
						//ВалютаПроверки  = Выборка["Цена" + НомерТипаЦен + "Валюта"];
						//ЕдиницаПроверки = Выборка["Цена" + НомерТипаЦен + "Единица"];
						//ЦенаВключаетНДС = Выборка["ЦенаВключаетНДС" + НомерТипаЦен];
						/*// Считаем, что если не задана цена или валюта цены
*/
						/*// (нет цены данного типа для данной номенклатуры), то
*/
						/*// проверка прошла
*/
						if(true/*НЕ ЗначениеЗаполнено(ВалютаПроверки)
				 Или НЕ ЗначениеЗаполнено(ЦенаПроверки)*/)
						{
							//МинимальнаяЦена = 0;
						}
						if(true/*РезультатЗапроса.Колонки.Найти("ПроцентСкидкиНаценки" + НомерТипаЦен) <> Неопределено*/)
						{
							//ПроцентСкидкиНаценки = Выборка["ПроцентСкидкиНаценки" + НомерТипаЦен];
						}
						if(true/*НЕ ЗначениеЗаполнено(ПроцентСкидкиНаценки)
				   И РезультатЗапроса.Колонки.Найти("ПроцентСкидкиНаценкиИзСправочника" + НомерТипаЦен) <> Неопределено*/)
						{
							//ПроцентСкидкиНаценки = Выборка["ПроцентСкидкиНаценкиИзСправочника" + НомерТипаЦен];
						}
						if(true/*НЕ ЗначениеЗаполнено(ПроцентСкидкиНаценки)*/)
						{
							//ПроцентСкидкиНаценки = 0;
						}
						//ЦенаПроверки = Окр(ЦенаПроверки * (1 + ПроцентСкидкиНаценки / 100), 2);
						if(true/*СоответствиеКурсыВалют[ВалютаПроверки] = Неопределено*/)
						{
							//СтруктураКурсаЦеныПроверки             = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаПроверки, ДокументОбъект.Дата);
							//КурсЦеныПроверки                       = СтруктураКурсаЦеныПроверки.Курс;
							//КратностьЦеныПроверки                  = СтруктураКурсаЦеныПроверки.Кратность;
							//СоответствиеКурсыВалют[ВалютаПроверки] = СтруктураКурсаЦеныПроверки;
						}
						//ЦенаПроверки = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(ЦенаПроверки, ЕдиницаПроверки, Выборка.ЕдиницаИзмерения);
						/*ПересчитаннаяЦенаПроверки = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(ЦенаПроверки,
																	   ВалютаПроверки,        ВалютаТовара,
																	   КурсЦеныПроверки,      КурсЦеныТовара,
																	   КратностьЦеныПроверки, КратностьЦеныТовара);*/
						/*// ДокументОбъект.ТипЦен.ЦенаВключаетНДС,
*/
						/*ЦенаВключаетНДС,
																					 ЕстьРеквизитУчитыватьНДС 
																					 И ДокументОбъект.УчитыватьНДС, 
																					 ЕстьСуммаВключаетНДС 
																					 И ДокументОбъект.СуммаВключаетНДС, 
																					 ?(ЕстьРеквизитТабЧастиСтавкаНДС,
																					 УчетНДС.ПолучитьСтавкуНДС(Выборка.СтавкаНДС),0));*/
						//ПересчитаннаяЦенаПроверки = Окр(ПересчитаннаяЦенаПроверки, 2);
						//МинимальнаяЦена = ?(НомерТипаЦен = 1, ПересчитаннаяЦенаПроверки, Мин(МинимальнаяЦена, ПересчитаннаяЦенаПроверки));
						if(true/*МинимальнаяЦена = 0*/)
						{
							//НомерТипаЦен = 0;
						}
					}
				}
				if(true/*МинимальнаяЦена > ЦенаТовара*/)
				{
					/*ТекстСообщения = "Строка "      + Выборка.НомерСтроки + ": "
					+ "Для товара " + Выборка.Номенклатура
					+ Символы.ПС + "    цена за единицу ниже порогового значения (цена: "
					+ Формат(ЦенаТовара, "ЧДЦ=2; ЧН=0") + " " + ВалютаТовара
					+ ", минимальное значение: "
					+ Формат(МинимальнаяЦена, "ЧДЦ=2; ЧН=0") + " " + ВалютаТовара
					+ ")";*/
					//ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ);
				}
			}
			//;;
		}
		// ПроверитьДопустимостьЦенОтпуска()
		// Функция возвращает признак можно ли превышать остаток товаров на складе при отпуске товаров.
		//
		// Параметры:
		//  нет.
		//
		// Возвращаемое значение:
		//  Истина - если разрешено превышать остаток, иначе Ложь.
		//

		public object РазрешеноПревышениеОстаткаТоваровНаСкладе(/**/)
		{
			return null;
		}
		// РазрешеноПревышениеОстаткаТоваровНаСкладе()
		// Функция возвращает признак разрешено ли отражать документы в регл учете
		//

		public object РазрешеноОтражениеВРеглУчете(/**/)
		{
			/*// В управляемом режиме отражение документов в учете производиться в соответствии с общими настройками.
*/
			/*// Каждый пользователь в каждом первичном документе не управляет отражением его в учете.
*/
			/*// В связи с этим для управляемого режима отдельное право на отражение в учете не используется
*/
			if(true/*ТекущийРежимЗапуска() = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение*/)
			{
				//ЕстьПраво = Истина;
			}
			return null;
		}
		// РазрешеноОтражениеВРеглУчете
		// Функция возвращает признак, разрешено ли редактировать разрешение превышения лимита отпуска материалов
		//

		public object РазрешеноРедактированиеРазрешенияПревышенияЛимитаОтпускаМатериалов(/**/)
		{
			return null;
		}
		// РазрешеноРедактированиеРазрешенияПревышенияЛимитаОтпускаМатериалов

		public object ПравоНеОтпускатьТоварСЦенойНижеОпределенногоТипа(/**/)
		{
			//ЗначениеПрава = ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.НеОтпускатьТоварСЦенойНижеОпределенногоТипа, Неопределено);
			return null;
		}
		// ПравоНеОтпускатьТоварСЦенойНижеОпределенногоТипа
		// Функция возвращает признак, разрешено ли проведение без контроля взаиморсчетов
		//

		public object ПравоРазрешитьПроведениеБезКонтроляВзаиморасчетов(/**/)
		{
			//ЗначениеПрава = ПравоЕстьУПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПроведениеБезКонтроляВзаиморасчетов, Истина);
			return null;
		}
		// Функция возвращает признак, разрешено ли проводить ППИ без заявки
		//

		public object ПравоРазрешитьПроведениеПлатежаБезЗаявки(/**/)
		{
			//ЗначениеПрава = ПравоЕстьУПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПроведениеПлатежаБезЗаявки, Истина);
			return null;
		}
		// Функция возвращает признак разрешено ли превышать свободный остаток денежных средств
		//

		public object ПравоРазрешитьПревышениеСвободногоОстаткаДС(/**/)
		{
			//ЗначениеПрава = ПравоЕстьУПользователя(ПланыВидовХарактеристик.ПраваПользователей.РазрешитьПревышениеСвободногоОстаткаДС, Истина);
			return null;
		}
		// Возвращает наличие прав для администрирования пользователей
		//

		public object ЕстьПравоАдминистрированияПользователей(/*ПользовательИБ = Неопределено*/)
		{
			if(true/*ПользовательИБ = Неопределено*/)
			{
				/*ЕстьПраво = (РольДоступна("ПолныеПрава") 
						ИЛИ РольДоступна("АдминистраторПользователей"));*/
			}
			return null;
		}
		// ЕстьПравоАдминистрированияПользователей
		// Копирует значения доп.прав
		//
		// Параметры:
		//		ТаблицаДопПрав	- <Таблица значений>, колонки "Право", "Значение".
		//						Содержит доп.права, которые нужно скопировать
		//		СписокПрофилей	- <Массив>, содержит ссылки на профили для которых нужно скопировать доп.права
		//

		public void КопироватьДополнительныеПрава(/*ТаблицаДопПрав, СписокПрофилей*/)
		{
			if(true/*ТаблицаДопПрав.Количество() = 0*/)
			{
			}
		}
		//
	}
}
